package tech.aichan.AiQA.model.vo.app;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import tech.aichan.AiQA.model.entity.App;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import tech.aichan.AiQA.model.entity.Item;
import tech.aichan.AiQA.model.entity.User;
import tech.aichan.AiQA.model.vo.ItemVO;
import tech.aichan.AiQA.model.vo.UserVO;
import tech.aichan.AiQA.utils.UserInfoUtil;

import java.io.Serial;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 应用视图
 *
 * @author mengyu
 * @date 2024/06/03 10:13
 */
@Data
public class AppVO implements Serializable {

    /**
     * id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 应用名
     */
    private String appName;

    /**
     * 应用描述
     */
    private String appDesc;

    /**
     * 应用图标
     */
    private String appIcon;

    /**
     * 应用类型（0-得分类，1-测评类）
     */
    private Integer appType;

    /**
     * 评分策略（0-自定义，1-AI）
     */
    private Integer scoringStrategy;

    /**
     * 审核状态：0-待审核, 1-通过, 2-拒绝
     */
    private Integer reviewStatus;

    /**
     * 审核信息
     */
    private String reviewMessage;

    /**
     * 审核人 id
     */
    private Long reviewerId;

    /**
     * 审核时间
     */
    private Date reviewTime;

    /**
     * 创建用户 id
     */
    private Long userId;

    /**
     * 创建应用的用户信息
     */
    private UserVO userVO;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 是否删除
     */
    private Integer isDelete;

    @Serial
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    public static AppVO getAppVOByApp(App app, User user){
        if(app == null){
            return null;
        }
        AppVO appVO = new AppVO();
        BeanUtils.copyProperties(app,appVO);
        appVO.setUserVO(UserVO.getUserVO(user));
        return appVO;
    }
}
